package com.zx.zxpicture.infrstructure.api.imgSearchimg;

import com.microsoft.playwright.*;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 获取以图搜图接口的url
 */
public class GetImagePageUrlApi {

    /**
     * 获取以图搜图的接口url
     *
     * @param imageUrl 图片路径
     * @return 接口url
     */
    public static String getImagePageUrlApi(String imageUrl) {
        // 使用 try-with-resources 确保资源正确关闭
        try (Playwright playwright = Playwright.create()) {
            // 启动 Chromium 浏览器（可以选择 Chrome 通道）
            Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions()
//                    .setHeadless(false) // 设置为 false 以显示浏览器窗口，true 为无头模式
                    .setChannel("chrome") // 使用 Chrome 通道，模拟 Google Chrome
            );

            // 创建新的浏览器页面
            Page page = browser.newPage();

            //跳转页面
            page.navigate("https://graph.baidu.com/pcpage/index?tpl_from=pc");
            System.out.println("已打开页面: " + page.title());

            // 定位搜索输入框并输入内容
            page.fill("//*[@id=\"app\"]/div/div[1]/div[7]/div/span[1]/input", imageUrl); // 使用 CSS 选择器定位 Google 搜索框

            // 点击搜索按钮（Google 的搜索按钮）
            page.click("//*[@id=\"app\"]/div/div[1]/div[7]/div/span[2]");

            // 等待页面加载完成（可选）
            page.waitForTimeout(2000); // 等待 2 秒以查看结果
            // 获取整个页面的 HTML 内容
            String pageContent = page.content();

            //使用Jsoup来解析HTML网页内容
            // 将 HTML 字符串转换为 Jsoup Document
            Document document = Jsoup.parse(pageContent);

            // 获取所有 <script> 标签
            Elements scriptElements = document.getElementsByTag("script");

            // 遍历找到包含 `firstUrl` 的脚本内容
            for (Element script : scriptElements) {
                String scriptContent = script.html();
                if (scriptContent.contains("\"firstUrl\"")) {
                    // 正则表达式提取 firstUrl 的值
                    Pattern pattern = Pattern.compile("\"firstUrl\"\\s*:\\s*\"(.*?)\"");
                    Matcher matcher = pattern.matcher(scriptContent);
                    if (matcher.find()) {
                        String firstUrl = matcher.group(1);
                        // 处理转义字符
                        firstUrl = firstUrl.replace("\\/", "/");
                        return firstUrl;
                    }
                }
            }

            // 关闭浏览器
            browser.close();
        }
        return "";
    }
    public static void main(String[] args) {
        System.out.println(getImagePageUrlApi("https://zx-1343343346.cos.ap-chongqing.myqcloud.com/picture/public/1891475289071927298/2025-02-26_d0WZnCtgZ8_thumbnail.jpg"));
    }
}